import { createStore } from 'vuex'

export default createStore({
  //定义全局参数 其他页面可以直接获取state里面的内容
  state: {
    token: localStorage.getItem("token"), //或者直接取空:''
    //JSON.parse反序列化将userInfo的json串变为userInfo对象
    userInfo : JSON.parse(sessionStorage.getItem("userInfo"))
  },
  mutations: {
    //相当于实体类的set
    SET_TOKEN: (state,token) => {
      //将传入的token赋值给state的token
      state.token = token
      //同时可以存入浏览器的localStorage里面
      localStorage.setItem("token",token)
    },
    SET_USERINFO: (state,userInfo) => {
      //将传入的tuserInfo赋值给state的userInfo
      state.userInfo = userInfo
      //同时可以存入会话的sessionStorage里面 sessionStorage中只能存字符串,不能存入对象,所以我们存入序列化 json串
      sessionStorage.setItem("userInfo",JSON.stringify(userInfo))
    },
    //删除token和userInfo
    REMOVE_INFO: (state) => {
      state.token = ''
      state.userInfo = {}
      localStorage.setItem("token",'')
      sessionStorage.setItem("userInfo",JSON.stringify(''))
    }
  },
  getters: {
    //相当于实体类的get
    //配置一个getUser可以直接获取已经反序列化对象的一个userInfo
    getUser: state => {
      return state.userInfo
    },
    getToken: state => {
      return state.token
    }
  },
  actions: {
  },
  modules: {
  }
})
